const path = require('path')
const KeyObfuscator = require('../src/main/key-obfuscator')

/**
 * 安全构建脚本
 * 在构建过程中自动处理密钥文件混淆
 */
async function buildWithKeyObfuscation() {
  const obfuscator = new KeyObfuscator()
  
  try {
    console.log('开始安全构建过程...')
    
    // 应用混淆
    console.log('正在混淆密钥管理器...')
    const success = obfuscator.applyObfuscationForBuild()
    
    if (!success) {
      console.error('密钥混淆失败，构建中断')
      process.exit(1)
    }
    
    console.log('密钥混淆完成，继续构建...')
    
    // 执行正常的构建过程
    const { spawn } = require('child_process')
    
    const buildProcess = spawn('npm', ['run', 'build'], {
      stdio: 'inherit',
      shell: true
    })
    
    buildProcess.on('close', (code) => {
      if (code === 0) {
        console.log('构建完成')
        
        // 构建完成后还原文件（可选）
        console.log('还原原始文件...')
        obfuscator.restoreKeyManager()
        console.log('安全构建流程完成')
      } else {
        console.error(`构建失败，退出码: ${code}`)
        
        // 即使构建失败也要还原文件
        console.log('还原原始文件...')
        obfuscator.restoreKeyManager()
        process.exit(code)
      }
    })
    
    buildProcess.on('error', (error) => {
      console.error('构建过程出错:', error)
      
      // 还原文件
      console.log('还原原始文件...')
      obfuscator.restoreKeyManager()
      process.exit(1)
    })
    
  } catch (error) {
    console.error('安全构建过程出错:', error)
    
    // 尝试还原文件
    try {
      obfuscator.restoreKeyManager()
    } catch (restoreError) {
      console.error('还原文件失败:', restoreError)
    }
    
    process.exit(1)
  }
}

// 如果直接运行此脚本
if (require.main === module) {
  buildWithKeyObfuscation()
}

module.exports = buildWithKeyObfuscation